// 1. 导入 axios
import axios from 'axios'
export default {
  // 开启命名空间
  namespaced: true,
  state () {
    return {
      // 2.登录成功之后，从locatorage取token
      // token: localStorage.getItem('token'),
      token: '',
      // 3. 定义用户信息对象
      // 7.获取到用户信息后 在首页 使用...mapState辅助函数 把 Vuex 中的 `userInfo` 数据映射到当前组件中使用
      userInfo: {}
    }
  },
  mutations: {
    // 1.点击登录和退出时 触发
    updateToken (state, token) {
      // 将token存入state
      state.token = token
      // 同时存入localStorage  || yarn add vuex-persistedstate  index.js导入之后直接替代localStorage
      // localStorage.setItem('token', token)
      // console.log(token)
    },
    // 5. 更新用户信息:接收到 登录发送过来的参数 对象 用户信息
    updateUserInfo (state, Info) {
      // 6.赋值给state中的userInfo
      state.userInfo = Info
      // console.log(Info)
    }
  },
  actions: {
    // 获取用户信息 通过commit更新
    // 3.登录成功进入到首页之后  在created钩子里 调用dispatch方法 在actions里发送ajax请求 获取数据
    initUserInfo (context) {
      axios({
        url: 'http://www.liulongbin.top:3008/my/userinfo',
        method: 'get',
        // 身份令牌
        headers: {
          Authorization: context.state.token
        }
      }).then(({ data: res }) => {
        // 成功回调
        // console.log(res)
        // if (res.code !== 0) {
        //   return
        // }
        if (res.code === 0) {
          // 4.通过调用commit调用mutations里的方法  将用户信息对象传递过去
          context.commit('updateUserInfo', res.data)
        }
      })
    }
  }
}
